unit form_scale;

{$mode objfpc}{$H+}

interface

uses
    Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
    StdCtrls, picture_core, picture_publ;

type

    { Tfm_scale }

    Tfm_scale = class(TForm)
        btn_apply: TButton;
        txt_scale_x_val: TLabeledEdit;
        txt_scale_cent_x: TLabeledEdit;
        txt_scale_y_val: TLabeledEdit;
        txt_scale_cent_y: TLabeledEdit;
        procedure btn_applyClick(Sender: TObject);
        procedure FormShow(Sender: TObject);
    private
    public
    end;

var
    fm_scale: Tfm_scale;

implementation

{$R *.lfm}

// Загрузка формы
procedure Tfm_scale.FormShow(Sender: TObject);
begin
    txt_scale_cent_x.Text := FloatToStr(pic_graph.get_pic_cent.X);
    txt_scale_cent_y.Text := FloatToStr(pic_graph.get_pic_cent.Y);
end;

// Масштабирование изображения
procedure Tfm_scale.btn_applyClick(Sender: TObject);
var
    scale_cen: TRPoint;
    scale_val: TRPoint;
begin

    if (txt_scale_cent_x.Text = '') or (txt_scale_cent_x.Text = '') then
    begin
        ShowMessage('Отсутствуют координаты точки масштабирования.');
        exit;
    end;

    if (txt_scale_x_val.Text = '') or (txt_scale_y_val.Text = '') then
    begin
        ShowMessage('Отсутствуют коэффициенты масштабирования изображения.');
        exit;
    end;

    with scale_cen do
    begin
        X := StrToFloat(txt_scale_cent_x.Text);
        Y := StrToFloat(txt_scale_cent_y.Text);
    end;

    with scale_val do
    begin
        X := StrToFloat(txt_scale_x_val.Text);
        Y := StrToFloat(txt_scale_y_val.Text);
    end;

    pic_graph.conv_scl(scale_cen, scale_val);
    pic_graph.conv_apply();
    fm_scale.Close();

end;

end.

